﻿#region << 版 本 注 释 >>
/*----------------------------------------------------------------
 * 版权所有 (c) 2022 北京超维景生物科技有限公司 保留所有权利。
 * CLR版本：4.0.30319.42000
 * 文件名：Kernel
 * 
 * 创建者：huangyang
 * 电子邮箱：huangyang@tvscope.cn
 * 创建时间：2023/2/15 16:41:57
 * 版本：V1.0.0
 * 描述：
 *
 * ----------------------------------------------------------------
 * 修改人：
 * 时间：
 * 修改说明：
 *
 * 版本：V1.0.1
 *----------------------------------------------------------------*/
#endregion << 版 本 注 释 >>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Channels;
using System.Threading.Tasks;

namespace ImageK.Plugin.Frame
{
    /// <summary>
    /// This is a simple TextArea based editor for editing and compiling plugins.
    /// </summary>
    public class Editor:PlugInFrame
    {
        public static int MONOSPACED = 1, MENU_BAR = 2, RUN_BAR = 4, INSTALL_BUTTON = 8;

        protected bool changes;

        public Editor(): this(24, 80, 0, MENU_BAR)
        {
            
        }

        public Editor(string name): this(24, 80, 0, getOptions(name))
        {
            
        }

        public Editor(int rows, int columns, int fontSize, int options)
        {
            Text = "Editor";
            //todo:
            // WindowManager.addWindow(this);
            // addMenuBar(options);
            // if ((options&RUN_BAR)!=0)
            // {
            //     Panel panel = new Panel(new FlowLayout(FlowLayout.LEFT, 0, 0));
            //     runButton = new Button("Run");
            //     runButton.addActionListener(this);
            //     panel.setFont(new Font("SansSerif", Font.PLAIN, sizes[fontSizeIndex]));
            //     panel.add(runButton);
            //     if ((options&INSTALL_BUTTON)!=0)
            //     {
            //         installButton = new Button("Install");
            //         installButton.addActionListener(this);
            //         panel.add(installButton);
            //     }
            //     language = new Choice();
            //     for (int i = 0; i<languages.length; i++)
            //         language.addItem(languages[i]);
            //     language.addItemListener(this);
            //     panel.add(language);
            //     add("North", panel);
            // }
            // ta = new TextArea(rows, columns);
            // ta.addTextListener(this);
            // ta.addKeyListener(this);
            // if (IJ.isLinux()) ta.setBackground(Color.white);
            // addKeyListener(IJ.getInstance());  // ImageJ handles keyboard shortcuts
            // ta.addMouseListener(this);  // ImageJ handles keyboard shortcuts
            // add(ta);
            // pack();
            // setFont();
            // positionWindow();
            // if (!IJ.isJava18() && !IJ.isLinux())
            //     insertSpaces = false;
        }

        private static int getOptions(string name)
        {
            int options = MENU_BAR;
            if (name==null)
                return options;
            if (name.EndsWith(".ijm") || name.EndsWith(".js") || name.EndsWith(".bsh") || name.EndsWith(".py"))
                options |= RUN_BAR;
            if (name.EndsWith(".ijm"))
                options |= INSTALL_BUTTON;
            return options;
        }

        public bool fileChanged()
        {
            return changes;
        }
    }
}
